package game;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import util.*;
import dispatchers.*;
import objects.*;

public class RunGame extends HttpServlet{
	GameDispatcher gameDispatcher = null;
	DBWordDispatcher wordDispatcher = null;
	
	public void init(){
		ServletContext context = getServletContext();
		DBManager dbManager = new DBManager("anagram", "root", "root");
		wordDispatcher = new DBWordDispatcher(dbManager, "words");
		gameDispatcher = new GameDispatcher(dbManager, "games");
	}


	public void doPost(HttpServletRequest request, 
						HttpServletResponse response) throws ServletException, IOException{
		doGet(request, response);
	}

	public void doGet(HttpServletRequest request, 
						HttpServletResponse response) throws ServletException, IOException{
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		
		HttpSession session = request.getSession();
		if(session==null || session.getAttribute("user")==null)  //если товарищ не авторизован, пересылаем его на страницу пользователя - там ему все объяснят
			response.sendRedirect("http://localhost:8080/Anagram/jsp/user/mypage.jsp");
		
		SingleGame singleGame = (SingleGame)session.getAttribute("singleGame");  //смотрим, что у нас с игрой
		if(singleGame==null || !singleGame.run()){			//если игра не начата или уже закочена, создаем новую игру
			User user = (User)session.getAttribute("user");
			singleGame = new SingleGame(user.getUserID(), getWord());
			session.setAttribute("singleGame", singleGame);
		};
		
		String answer = request.getParameter("answer");  //посылаем игре ответ игрока
		if(answer!=null)
			singleGame.addAnswer(answer);
		
		
		if(!singleGame.run()){ //если игрок не ошибся и игра окончилась - сохраняем игру в бд
			gameDispatcher.saveGame(singleGame);
		}
				
		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("//jsp//user//gamepage.jsp");
		dispatcher.forward(request, response);
	}	
	
	private String getWord(){
		return wordDispatcher.getRandomWord();
	}
}